package com.ad.pet.common.data.injector.component;

import android.app.NotificationManager;
import android.content.Context;
import android.view.LayoutInflater;

import com.ad.pet.App;
import com.ad.pet.api.ApiService;
import com.ad.pet.app.RxDisposable;
import com.ad.pet.common.data.http.HttpHelp;
import com.ad.pet.common.data.injector.module.ApiModule;
import com.ad.pet.common.data.injector.module.ApplicationModule;
import com.ad.pet.common.data.utils.FileUtil;
import com.ad.pet.common.data.utils.JsonUtil;
import com.ad.pet.common.data.utils.SpUtil;
import com.ad.pet.common.data.utils.ui.ResourcesUtil;
import com.ad.pet.common.data.utils.ui.ToastUtil;
import com.ad.pet.common.data.utils.ui.UIUtil;
import com.ad.pet.common.structure.ui.activity.BaseActivity;

import javax.inject.Singleton;

import dagger.Component;
import okhttp3.OkHttpClient;
import retrofit2.Retrofit;

/**
 * Created by sll on 2016/3/8.
 */
@Singleton
@Component(modules = {
        ApplicationModule.class, ApiModule.class
})
public interface ApplicationComponent {
    Context getContext();


    HttpHelp getOkHttpHelper();

    OkHttpClient getOkHttpClient();

    Retrofit getRetrofit();

    NotificationManager getNotificationManager();

    LayoutInflater getLayoutInflaterr();

    ApiService getApiService();

    ToastUtil getToastUtil();

    SpUtil getSpUtil();

    JsonUtil getJsonUtil();

    ResourcesUtil getResourcesUtil();

    UIUtil getUiUtil();

    FileUtil getFileUtil();

    RxDisposable getRxDisposable();

    void inject(App mApplication);

    void inject(BaseActivity mBaseActivity);

}
